from flask import Blueprint, json,request,jsonify #导入蓝图

from db import db1 #导入pymysql


bp_course= Blueprint('course',__name__)#实例化蓝图 


#构造数据结构
def xtree(data):
    #看data有没有，没有直接返回
    if not data:
        return data
    #先循环把data变成字典
    tree={}
    list=[]
    for i in data:
        #把id作为键data作为值
        tree[i['id']]=i
        list.append(tree)
        
    for j in data:
        #获取父id
        pid=j['pid']
        #判断是否为顶级父类
        if pid==0:
            #是顶级父类就直接加到列表里
            list.append(j)
    
            
        else:
            #查看父类下有没有子类
            if 'son' not in tree[pid]:
                #如果子类下没有父类就创建一个空列表来盛放子类
                tree[pid]['son']=[]
            #把子类加到列表中
            tree[pid]['son'].append(j)
    return list

@bp_course.route('/cateM',methods=['POST','GET'])
def method_name():
    if request.method=='POST':
        #获取前端传递的数据
        data=request.data
        if data:
            data=json.loads(data)
        else:
            data=request.form
        # 将数据添加到数据库中
        sql="insert into cates values(0,'%s',%d,'%s')"%(data['name'],int(data['pid']),data['params'])
        db1.update(sql)
        #返回
        return jsonify({'code':200})
    elif request.method=='GET':
        #获取分类表所有信息
        sql="select * from cates"
        res=db1.findall(sql)

        data=xtree(res)


        #返回
        return jsonify({'code':200,'list':data})

@bp_course.route('/pagecates')
def pagecates():
    #每页显示多少条
    page_size=2
    #当前页
    page=request.args.get('page')
    #计算页面开始位置
    start=(int(page)-1)*page_size
    #获取分类表所有信息根据id降序排序          limit后面跟开始页和每页显示多少条
    sql="select * from cates order by id asc limit %d,%d"%(start,page_size)
    # sql = "select c.name,c.params,t.name as tname from cates as c left join cates as t on c.pid=t.id order by c.id desc"
    res=db1.findall(sql)
    #通过id查询共有多少条记录
    sql1="select count(id) as total from cates"
    res1=db1.find(sql1)
    return jsonify({'code':200,'list':res,'total':res1['total']})


# 根据id查询分类表中的字段
@bp_course.route('/getCateByid')
def getCateByid():
    #获取前端传递的id
    id=request.args.get('id')
    #通过id去数据库中查询params(参数)字段
    sql="select params from cates where id=%d"%(int(id))
    res=db1.find(sql)
    #返回
    return jsonify({'code':200,'params':res['params']})



#添加课程接口
@bp_course.route('/courseM',methods=['POST','GET'])
def courseM():
    if request.method=='POST':
        #获取data
        data=request.data
        if data:
            data=json.loads(data)
        else:
            data=request.form
        if data['params']:
            sql="insert into courses values"
    
